/**
 * <p>Copyright:Copyright(c) 2019</p>
 * <p>Company:Professional</p>
 * <p>Package:com.cesgroup.zw.spring.boot.echarts.component.series</p>
 * <p>File:Graph.java</p>
 * <p>类更新历史信息</p>
 * @todo chanlong(陈龙) 创建于 May 24, 2019 4:05:55 PM
 */
package com.cesgroup.zw.spring.boot.echarts.component.series;

import java.math.BigDecimal;

import com.cesgroup.zw.spring.boot.echarts.component.series.parent.CoordinateSeries;
import com.cesgroup.zw.spring.boot.echarts.enums.Layout;
import com.cesgroup.zw.spring.boot.echarts.model.graph.GraphLink;
import com.cesgroup.zw.spring.boot.echarts.model.series.Category;
import com.cesgroup.zw.spring.boot.echarts.model.series.Circular;
import com.cesgroup.zw.spring.boot.echarts.model.series.Force;
import com.cesgroup.zw.spring.boot.echarts.model.style.LabelStyle;
import com.cesgroup.zw.spring.boot.echarts.model.style.LineStyle;

import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * <p>描述: 关系图</p>
 * <p>Company: Professional</p>
 * @author chanlong(陈龙)
 * @date May 24, 2019 4:05:55 PM
 * @version 1.0.2019
 */
@Data @SuppressWarnings("serial")
@EqualsAndHashCode(callSuper = true)
public class Graph extends CoordinateSeries {
	
	/** 是否开启鼠标 hover 节点的提示动画效果 */
	private Boolean hoverAnimation;
	
	/** 图的布局，[default: 'none'] */
	private Layout layout;
	
	/** 环形布局相关配置 */
	private Circular circular;
	
	/** 力引导布局相关配置 */
	private Force force;
	
	/** 是否开启鼠标缩放和平移漫游，[default: false] */
	private Boolean roam;
	
	/** 鼠标漫游缩放时节点的相应缩放比例，[default: 0.6] */
	private BigDecimal nodeScaleRatio;
	
	/** 节点是否可拖拽，[default: false] */
	private Boolean draggable;
	
	/** 是否在鼠标移到节点上的时候突出显示节点以及节点的边和邻接节点，[default: false] */
	private Boolean focusNodeAdjacency;
	
	/** 标记的图形，[default: 'circle'] */
	private Object symbol;
	
	/** 标记的大小，[default: 10] */
	private Object symbolSize;
	
	/** 标记的旋转角度 */
	private Integer symbolRotate;
	
	/** 标记为自定义图片时，是否保持缩放比例，[default: false] */
	private Boolean symbolKeepAspect;
	
	/** 标记的偏移，[default: [0, 0]] */
	private Object symbolOffset;
	
	/** 边两端的标记类型，可以是一个数组分别指定两端，也可以是单个统一指定，[default: ['none', 'none']] */
	private Object edgeSymbol;
	
	/** 边两端的标记大小，可以是一个数组分别指定两端，也可以是单个统一指定，[default: 10] */
	private Object edgeSymbolSize;
	
	/** 关系边的公用线条样式 */
	private LineStyle lineStyle;
	
	/** 边两端标记文本样式 */
	private LabelStyle edgeLabel;
	
	/** 节点分类的类目 */
	private Category[] categories;
	
	/** 节点间的关系数据 */
	private GraphLink[] graphLinks;
	
	/** 节点间的关系数据 */
	private GraphLink[] links;
	
	/** 节点间的关系数据 */
	private GraphLink[] edges;
	
	/** 组件离容器上侧的距离，[default: 'auto'] */
	private Object top;
	
	/** 组件离容器左侧的距离，[default: 'auto'] */
	private Object left;
	
	/** 组件离容器右侧的距离，[default: 'auto'] */
	private Object right;
	
	/** 组件离容器下侧的距离，[default: 'auto'] */
	private Object bottom;
	
	public Graph() {
		this.setType("graph");
	}
}
